//
//  Pizza.h
//  Charles
//
//  Created by Charles on 2017/6/15.
//  Copyright © 2017年 charles. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Protocal.h"

@class Pizza;


@interface ThickCrustDough : NSObject<Dough>

@end

@interface ThinCrustDough : NSObject<Dough>

@end

@interface PlumTomatoSauce : NSObject<Sauce>

@end

@interface MarinaraSauce : NSObject<Sauce>

@end

@interface MozzarellaCheese : NSObject<Cheese>

@end

@interface ReggianoCheese : NSObject<Cheese>

@end

@interface FrozenClams : NSObject<Clams>

@end

@interface FreshClams : NSObject<Clams>

@end

#pragma mark - 比萨

@interface Pizza : NSObject

@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *dough;
@property (nonatomic,copy) NSString *sauce;
@property (nonatomic,strong) NSMutableArray *toppings;

- (void)prepare;

- (void)bake;

- (void)cut;

- (void)box;

@end


@interface CLPizza : NSObject

@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) id<Dough> dough;
@property (nonatomic,strong) id<Sauce> sauce;
@property (nonatomic,strong) NSMutableArray *veggies;
@property (nonatomic,strong) id<Cheese> cheese;
@property (nonatomic,strong) id<Pepperoni> pepperoni;
@property (nonatomic,strong) id<Clams> clam;

- (void)prepare;

- (void)bake;

- (void)cut;

- (void)box;

@end


@interface CheesePizza : CLPizza

- (instancetype)initWithFactory:(id<PizzaIngredientFactory>)factory;

@end

@interface NYCheesePizza : Pizza

@end

@interface NYPepperoniPizza :  Pizza
@end

@interface NYClamPizza :  Pizza

@end

@interface NYVeggiePizza :  Pizza

@end




